package com.company.collectionsFramework;

import com.company.generic.Hero;

import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

/***
 * LinkedList除了实现List和Deque外， 还实现了Queue接口(队列)
 * Queue是先进先出FIFO，常用方法
 *  offer在最后添加元素
 *  poll 取出第一个元素
 *  peek查看第一个元素
 * */
public class testQueue {
    public static void main(String[] args) {
        //和ArrayList一样，LinkedList也实现了List接口
        List ll = new LinkedList<Hero>();

        //所不同的是LinkedList还实现了Deque， 进而又实现了Queue这个接口
        //Queue代表FIFO 先进先出
        Queue<Hero> q = new LinkedList<Hero>();
        //加在队列的最后面
        System.out.println("初始化队列：\t");
        q.offer(new Hero("hero1"));
        q.offer(new Hero("hero2"));
        q.offer(new Hero("hero3"));
        q.offer(new Hero("hero4"));
        System.out.println(q);
        System.out.println("把第一个元素取poll()出来: \t");
        Hero h = q.poll();
        System.out.println(h);
        System.out.println("取出第一个元素之后的队列:\t");
        System.out.println(q);

        //把第一个拿出来看一看，但是不取出来
        h = q.peek();
        System.out.println("查看peek第一个元素:\t");
        System.out.println(h);
        System.out.println("查看并不会导致第一个元素被取出来:\t");
        System.out.println(q);
        
        /**
         * ArrayList和LinkedList的区别：
         * ArrayList    插入， 删除数据慢
         * LinkedList   插入， 删除数据快
         *ArrayList是顺序结构，所以定位很快，指哪找那，就像电影院位置一样，有了电影票，一下就找到位置了。
         * LinkedList是链表结构，就像手里的一串佛珠，要找出第99颗珠子，必须得一个一个的数过去，所以定位慢。
         * **/

    }
}
